home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
CU Amiga Super CD-ROM 11
/
CU Amiga Magazine's Super CD-ROM 11 (1997)(EMAP Images)(GB)(Track 1 of 3)[!][issue 1997-06].iso
/
cucd
/
programming
/
oberonv4
/
source
/
system
/
textloc.mod
(
.txt
)
< prev
next >
Wrap
Oberon Text
|
1996-02-07
|
1KB
|
37 lines
Syntax10.Scn.Fnt
Syntax10i.Scn.Fnt
StampElems
Alloc
7 Feb 96
Syntax10m.Scn.Fnt
MODULE TextLoc; (** SHML 7 Feb 96 /
(** a LocElems searcher, looking for section headers *)
IMPORT Fonts, Texts, TextFrames, LocElems;
PROCEDURE Search(e: LocElems.Elem; t: Texts.Text; VAR sort(*out*): BOOLEAN);
VAR r: Texts.Reader; ch: CHAR; i: INTEGER; str: ARRAY LocElems.StrLen OF CHAR;
BEGIN
Texts.OpenReader(r, t, 0);
LOOP
REPEAT Texts.ReadElem(r) UNTIL r.eot OR (r.elem # NIL) & (r.elem IS TextFrames.Parc);
IF r.eot THEN EXIT END;
REPEAT Texts.Read(r, ch) UNTIL r.eot OR (ch > " ");
IF r.eot THEN EXIT END;
i := -1;
REPEAT INC(i) UNTIL (r.fnt.name[i] = "b") OR (r.fnt.name[i] = "m") OR (r.fnt.name[i] = 0X);
IF (r.fnt.height > Fonts.Default.height) OR (r.fnt.name[i] = "b") OR (r.fnt.name[i] = "m") THEN
i := 0;
WHILE (ch > 0DX) & (i < LocElems.StrLen-1) DO str[i] := ch; INC(i); Texts.Read(r, ch) END;
str[i] := 0X;
IF ch <= 0DX THEN (* headers are terminated with a 0DX *)
IF LocElems.Append(e, str, Texts.Pos(r)-1) THEN EXIT END
END
END
END;
sort := FALSE
END Search;
PROCEDURE Install*;
BEGIN LocElems.Install("Text", Search)
END Install;
END TextLoc.
TextLoc.Install